<?php
/******************************************************
	* Vue pour l'affichage de la gestion des client	 *
	* Récuperation du template GererClientTemplate.xsl *
	* Et remplissage de la variable $content du layout   * 
	* avec le template		                             *
	******************************************************/

class GererClientView extends View
{
	
	protected $xmlDoc;
	protected $parentNode;
	protected $xslt;
	//on recupere le path de notre template (ici le template est une feuille de style xsl) et du layout
	public function __construct(){
		
		$temp=dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'template'.DIRECTORY_SEPARATOR.'GererClientTemplate.xsl';
		$this->setTemplate($temp);
		$lay=dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'layout'.DIRECTORY_SEPARATOR.'Layout.php';
		$this->setLayout($lay);
	}
	
	
	public function display(HttpRequest $request)
    {
        $this->setRequest($request);
		//on creer le fichier xml qui sera utilise par la feuille de style
		$this->createClientXML($request->getObject('listeClients'));
		$this->prepareOutput();
		//on démarre la temporisation de sortie
        ob_start();
		//on effectue la transformation xslt (xml +feuille de style)
        $content= print($this->xslt->transformToXML($this->xmlDoc));
		//on recupere le contenu du tampon
        $content = ob_get_contents();
		//on efface le contenu du tampon
        ob_end_clean();
		//on inclut le layout
        include $this->getLayout();
    }
	 
	 

	
	 public function prepareOutput()
    {
		$xsl=new DomDocument();
		//on charge la feuille de style xsl
		$xsl->load($this->getTemplate());
		//on creer notre objet xslt
		$this->xslt= new XSLTProcessor();
		//on importe la feulle de style pour la fusion future
		$this->xslt->importStylesheet($xsl);
	}
	
	function createClientXML($clients){
	//Le fichier xml generer ser de la forme suivante:
	/*<listeClients>
		<titrepage></titrepage>
		 <clients>
			<client id="1">
				<nom></nom>
				<prenom></prenom>
			</client> 
		</clients>
	<listeClients>*/
		
		// on creer la struture generale (noeud racine titrepage,noeud client)
			$this->xmlDoc = new DomDocument('1.0','utf-8');
			$this->parentNode=$this->xmlDoc->appendChild($this->xmlDoc->createElement('listeClients'));
			$titretableauNode=$this->xmlDoc->createElement('titrepage');
			$this->parentNode->appendChild($titretableauNode);
			$titretableauNode->appendChild($this->xmlDoc->createTextNode('Gestion des clients'));
			$clientsNode=$this->xmlDoc->createElement('clients');
			$this->parentNode->appendChild($clientsNode);
			
			//on genere les noeuds pour les clients
			foreach( $clients as $client ) {
				$clientNode=$this->xmlDoc->createElement('client');
				$clientsNode->appendChild($clientNode);
				$clientNode->setAttribute("id", $client->getId());
				$nomNode=$this->xmlDoc->createElement('nom');
				$clientNode->appendChild($nomNode);
				$nomNode->appendChild($this->xmlDoc->createTextNode($client->getNom()));
				$prenomNode=$this->xmlDoc->createElement('prenom');
				$clientNode->appendChild($prenomNode);
				$prenomNode->appendChild($this->xmlDoc->createTextNode($client->getPrenom()));
			}
	
		}
}
?>
